const path = require('path')

const fileUtils = require('../utils/file-utils.js')
// 导入WebSocket 包
const WebSocket = require('ws')
// 创建WebStock服务端对象，端口号为9998
const wss = new WebSocket.Server({
  port: 9998
})

module.exports.listen = () => {
  // 对客户端的连接事件进行监听
  // client：代表的是客户端连接的socket对象
  wss.on('connection', client => {
    console.log('席城');

    // 对客户端连接的对象进行message事件的监听
    client.on('message', async msg => {
      let payLoad = JSON.parse(msg)
      const action = payLoad.action
      if (action === 'getData') {
        let filePath = '../data/' + payLoad.chartName + '.json'
        filePath = path.join(__dirname, filePath)
        const ret = await fileUtils.getFileJsonData(filePath)
        // 需要在服务端获取到数据的基础上，增加一个data字段
        // data所对应的值，就是某个json文件的内容
        payLoad.data = ret
        client.send(JSON.stringify(payLoad))
      } else {
        // 原封不动的将所接收到的数据转发给每一个处于连接状态的客户端
        wss.clients.forEach(client => {
          client.send(msg)
        })
      }
      // client.send('席城')
    })
  })
}
